home *** CD-ROM | disk | FTP | other *** search
Wrap
package com.extensibility.xml; import com.extensibility.xml.dt.DataType; import com.extensibility.xml.dt.DataTypeFactory; import com.extensibility.xml.dt.DataTypeIntf; import java.io.IOException; class OSCFlavor extends XDRFlavor implements ExtraMetaDataUIIntf { static String NAME = "osc"; static String[] NAMESPACES = new String[]{"osc", "urn:schemas-onesoft-com:extensions"}; static Class[] EL_CLASSES = new Class[]{Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String")}; static int[] EL_WIDTHS = new int[]{80, 80, 70, 70, 70, 80, 150, 150}; static double[] EL_WEIGHTS = new double[]{0.1, 0.1, 0.01, 0.01, 0.01, 0.01, 0.1, 0.1}; static String[] EL_METAPROPS = new String[]{"osc:dt", "osc:fkey", "osc:fullText", "osc:length", "osc:destroy", "osc:noScript", "osc:pkey", "osc:storageName"}; static String[] EL_NAMES = new String[]{"dt", "fkey", "fullText", "length", "destroy", "noScript", "pkey", "storageName"}; static boolean[] EL_IS_LIST = new boolean[]{false, false, false, false, false, false, true, false, false}; static Class[] CP_CLASSES = new Class[]{Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String")}; static int[] CP_WIDTHS = new int[]{0, 0, 0}; static double[] CP_WEIGHTS = new double[]{0.3, 0.3, 0.4}; static String[] CP_METAPROPS = new String[]{"osc:defaultCreate", "osc:defaultSet", "osc:rename"}; static String[] CP_NAMES = new String[]{"defaultCreate", "defaultSet", "rename"}; static boolean[] CP_IS_LIST = new boolean[]{false, false, false}; static Class[] AT_CLASSES = new Class[]{Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String"), Class.forName("java.lang.String")}; static int[] AT_WIDTHS = new int[]{150, 150, 150, 150, 80, 80, 80, 80, 150, 150}; static double[] AT_WEIGHTS = new double[]{0.1, 0.1, 0.1, 0.1, 0.01, 0.01, 0.01, 0.01, 0.1, 0.1}; static String[] AT_METAPROPS = new String[]{"osc:defaultCreate", "osc:defaultSet", "osc:dt", "osc:fkey", "osc:fullText", "osc:length", "osc:destroy", "osc:noScript", "osc:rename", "osc:storageName"}; static String[] AT_NAMES = new String[]{"defaultCreate", "defaultSet", "dt", "fkey", "fullText", "length", "destroy", "noScript", "rename", "storageName"}; static boolean[] AT_IS_LIST = new boolean[]{false, false, false, false, false, false, false, false, false, false}; static DataTypeIntf dtType; static DataTypeIntf destroyType; OSCFlavor(SchemaIntf var1) { super(var1); } public String getExtensionsName() { return "OneSoft"; } public String getFlavorName() { return NAME; } protected void createExtensionNamespaces() { String[] var1 = this.getNamespaces(); int var2 = 0; while(var2 < var1.length) { String var3 = var1[var2++]; String var4 = var1[var2++]; if (super.schema.getNamedDeclaration(var3, Class.forName("com.extensibility.xml.NamespaceDeclaration")) == null) { NamespaceDeclaration var5 = new NamespaceDeclaration(var3, var4); super.schema.insertDeclaration(var5, (BaseDeclaration)null); } } } public void parse(URI var1, URI var2, int var3, Object var4) throws IOException { super.parse(var1, var2, var3, var4); NamespaceDeclaration var5 = super.schema.getNamedNamespace(NAMESPACES[0]); if (var5 != null) { super.schema.removeDeclaration(var5); } } private void checkForErrors(BaseDeclaration var1, DataType var2) { if (var2 != null && var2.equals(DataTypeIntf.STRING) && var1.getMetaProp("osc:length") == null) { var1.addError(new ParserException(999, "Strings must have their osc:length specified in OSC schemas.")); } if (var2 != null && var2.equals(DataTypeIntf.FIXED144) && var1.getMetaProp("osc:dt") == null) { var1.addError(new ParserException(999, "Currency must have their osc:dt specified in OSC schemas.")); } if (var1.getMetaProp("osc:dt") != null && (new String("money,string,text,dateTime")).indexOf(var1.getMetaProp("osc:dt").toString()) == -1) { var1.addError(new ParserException(999, "osc:dt must be one of [money, string, text, dateTime] in OSC schemas.")); } if (var1.getMetaProp("osc:length") != null) { String var3 = var1.getMetaProp("osc:length").toString(); int var4 = -1; try { var4 = Integer.parseInt(var3); } catch (NumberFormatException var6) { } if (var4 <= 0) { var1.addError(new ParserException(999, "osc:length, if present, must be >= 1 in OSC schemas.")); } } if (var1.getMetaProp("osc:destroy") != null && (new String("warn,no")).indexOf(var1.getMetaProp("osc:destroy").toString()) == -1) { var1.addError(new ParserException(999, "osc:destroy must be one of [warn, no] in OSC schemas.")); } if (var1.getMetaProp("osc:rename") != null && !DTDParser.isName(var1.getMetaProp("osc:rename").toString())) { var1.addError(new ParserException(999, "osc:rename, if present must be a valid xml name in OSC schemas.")); } } public void checkForErrors(BaseDeclaration var1) { super.checkForErrors(var1); if (var1 instanceof ElementDeclaration) { ElementDeclaration var2 = (ElementDeclaration)var1; ContentModel var3 = var2.getEffectiveModel(); boolean var4 = false; ContentModelTerm var5 = var3.getRootGroup(); if (var5 != null && var2.getAllowsTags()) { ContentModelTermEnum var6 = var5.getTerms(true); while(var6.hasMoreElements()) { ContentModelTerm var7 = (ContentModelTerm)var6.nextElement(); if (var7.isGroup()) { var1.addError(new ParserException(999, "Groups (parentheses) are not permitted in OSC schemas.")); } } } if (var3.isTagsOnly()) { if (((ContentModelTerm)var3).getChildConnection(true) != '|' && ((ContentModelTerm)var3).getChildConnection(true) != 0) { var1.addError(new ParserException(999, "Only 'many' models [e.g. (a | b | c)*] permitted in OSC schemas.")); } else if (((ContentModelTerm)var3).getOccurance() != '*') { var1.addError(new ParserException(999, "only 'many' models [e.g. (a | b | c)*] permitted in OSC schemas.")); } } if (var3.isMixed()) { var1.addError(new ParserException(999, "Mixed models (text and elements together) are not permitted in OSC schemas.")); } if (var3.isTextOnly() && var2.getDataType() == null) { var1.addError(new ParserException(999, "Text elements must have a datatype specified in OSC schemas.")); } this.checkForErrors(var1, var2.getDataType()); } else if (var1 instanceof AttributeDeclaration) { AttributeDeclaration var8 = (AttributeDeclaration)var1; if (var8.getDataType() == null) { var1.addError(new ParserException(999, "Attributes must have a datatype specified in OSC schemas.")); } this.checkForErrors(var1, var8.getDataType()); } else if (var1 instanceof NamespaceDeclaration) { NamespaceDeclaration var9 = (NamespaceDeclaration)var1; if (((BaseDeclaration)var9).getName().equals(NAMESPACES[0]) && !var9.getNamespace().equals(NAMESPACES[1])) { var1.addError(new ParserException(999, String.valueOf(String.valueOf("The osc namespace must be ").concat(String.valueOf(NAMESPACES[1]))).concat(String.valueOf(" in OSC schemas.")))); } } } public boolean isSupported(String var1) { return var1.equals("GESTALT_FORBID_LOCAL_ATTRS") ? true : super.isSupported(var1); } public int getExtraColumnCount(int var1) { if (var1 == 1) { return EL_METAPROPS.length; } else if (var1 != 3 && var1 != 4) { return var1 == 2 ? CP_METAPROPS.length : 0; } else { return AT_METAPROPS.length; } } public String getColumnName(int var1, int var2) { if (var1 == 1) { return EL_NAMES[var2]; } else if (var1 != 3 && var1 != 4) { return var1 == 2 ? CP_NAMES[var2] : null; } else { return AT_NAMES[var2]; } } public Class getColumnClass(int var1, int var2) { if (var1 == 1) { return EL_CLASSES[var2]; } else if (var1 != 3 && var1 != 4) { return var1 == 2 ? CP_CLASSES[var2] : null; } else { return AT_CLASSES[var2]; } } public int getInitialColumnWidth(int var1, int var2) { if (var1 == 1) { return EL_WIDTHS[var2]; } else if (var1 != 3 && var1 != 4) { return var1 == 2 ? CP_WIDTHS[var2] : 0; } else { return AT_WIDTHS[var2]; } } public double getColumnWeight(int var1, int var2) { if (var1 == 1) { return EL_WEIGHTS[var2]; } else if (var1 != 3 && var1 != 4) { return var1 == 2 ? CP_WEIGHTS[var2] : (double)0.0F; } else { return AT_WEIGHTS[var2]; } } public String getColumnMetaProp(int var1, int var2) { if (var1 == 1) { return EL_METAPROPS[var2]; } else if (var1 != 3 && var1 != 4) { return var1 == 2 ? CP_METAPROPS[var2] : null; } else { return AT_METAPROPS[var2]; } } public boolean isColumnMetaPropList(int var1, int var2) { if (var1 == 1) { return EL_IS_LIST[var2]; } else if (var1 != 3 && var1 != 4) { return var1 == 2 ? CP_IS_LIST[var2] : false; } else { return AT_IS_LIST[var2]; } } public DataTypeIntf getDataType(int var1, int var2) { String var3 = this.getColumnName(var1, var2); if (var3.equals("dt")) { return dtType; } else { return var3.equals("destroy") ? destroyType : null; } } public String getDefaultValue(int var1, int var2) { return null; } public boolean isColumnMetaPropAttrs(int var1, int var2) { return false; } public String[] getNamespaces() { return NAMESPACES; } static { dtType = DataTypeFactory.createDataType(DataTypeIntf.ENUMERATION).setOptions("money|string|text|dateTime"); destroyType = DataTypeFactory.createDataType(DataTypeIntf.ENUMERATION).setOptions("warn|no"); } }